// package com.sc.shiro;
//
// import java.util.LinkedHashMap;
/// */ **
// * Shiro配置Bean
// */
// import java.util.Map;
//
// import org.apache.shiro.cache.ehcache.EhCacheManager;
// import
// org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
// import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
// import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
// import
// org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
// import
// org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
//
// @Configuration
// public class ShiroConfigBean {
//
// @Bean
// public ShiroFilterFactoryBean shirFilter(DefaultWebSecurityManager
// securityManager) {
// System.out.println("ShiroConfiguration.shirFilter()");
// ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
//
// // 必须设置 SecurityManager
// shiroFilterFactoryBean.setSecurityManager(securityManager);
//
// // 拦截器.
// Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String,
// String>();
// // 配置哪些页面需要受保护.
// // 以及访问这些页面需要的权限.
// // 1). anon 可以被匿名访问
// // 2). authc 必须认证(即登录)后才可能访问的页面.
// // 3)logout:退出登陆
//
// // 设置login URL
// shiroFilterFactoryBean.setLoginUrl("/WHeadInfoController/intoMainPage");
// // 登录成功后要跳转的链接
// shiroFilterFactoryBean.setSuccessUrl("/WBizController/HeadPage");
// // 未授权的页面
// shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized.action");
// // src="jquery/jquery-3.2.1.min.js" 生效
// filterChainDefinitionMap.put("/jquery/*", "anon");
// filterChainDefinitionMap.put("/adminltecss/**", "anon");
// filterChainDefinitionMap.put("/demos/**", "anon");
// filterChainDefinitionMap.put("/dist/**", "anon");
// filterChainDefinitionMap.put("/image/**", "anon");
// filterChainDefinitionMap.put("/screenshot/**", "anon");
// filterChainDefinitionMap.put("/src/**", "anon");
// filterChainDefinitionMap.put("/tests/**", "anon");
// filterChainDefinitionMap.put("/vcode/**", "anon");
// // 设置登录的URL为匿名访问，因为一开始没有用户验证，进入登陆界面
// filterChainDefinitionMap.put("/WBizController/loginDemo", "anon");
// filterChainDefinitionMap.put("/WBizController/HeadPage", "anon");
// // 忽略在登陆时进行用户名和密码验证
// filterChainDefinitionMap.put("/WBizController/selectBynameAndPassWord",
// "anon");
// // 忽略判断用户名是否存在
// filterChainDefinitionMap.put("/WBizController/selectByUserNameInfo", "anon");
// // 进入主页面
// filterChainDefinitionMap.put("/WHeadInfoController/intoMainPage", "anon");
//
// // 点击项目进入项目详情
// filterChainDefinitionMap.put("/WHeadInfoController/selectItemsAllInfo",
// "anon");
// // 跳转到查询所有的项目的信息列表
// filterChainDefinitionMap.put("/WHeadInfoController/selectAllItemsInfo",
// "anon");
// // 进入搜索界面
// filterChainDefinitionMap.put("/WHeadInfoController/seachInfo", "anon");
// // 动态查询
// filterChainDefinitionMap.put("/WHeadInfoController/dynmicSelectInfo",
// "anon");
// // 进关联页面
// filterChainDefinitionMap.put("/WHeadInfoController/intoPicInfo", "anon");
// // -------------------------------------------------------------------
// // 我写的url一般都是xxx.action，根据你的情况自己修改
// filterChainDefinitionMap.put("/WHeadInfoController/**", "authc");
// filterChainDefinitionMap.put("/WBizController/**", "authc");// authc
// filterChainDefinitionMap.put("/insertAppointment", "authc"); // 必须登陆之后才可以访问
//
// filterChainDefinitionMap.put("/selectAppointmentECByYear", "authc");
// filterChainDefinitionMap.put("/inertAppoin", "authc");// authc
// filterChainDefinitionMap.put("/updateAppOrDate", "authc"); // 必须登陆之后才可以访问
// filterChainDefinitionMap.put("/CustomerController/**", "authc");
//
// filterChainDefinitionMap.put("/doLogin", "authc"); // 必须登陆之后才可以访问
// filterChainDefinitionMap.put("/updataEphoneAndEimages", "authc");
//
// filterChainDefinitionMap.put("/HandEmployeeController/**", "authc");
//
// filterChainDefinitionMap.put("/show", "authc");
//
// filterChainDefinitionMap.put("/anchanginfo", "authc");
//
// filterChainDefinitionMap.put("/selectItemsAllInfo", "authc");
//
// filterChainDefinitionMap.put("/AnChang", "authc");
//
// filterChainDefinitionMap.put("/pinfo", "authc");
//
// // 退出系统的过滤器
// filterChainDefinitionMap.put("/WBizController/outSystemDemo", "logout"); //
// anon
// // 可以匿名访问
// // 现在资源的角色
// filterChainDefinitionMap.put("/admin.html", "roles[admin]");
// // filterChainDefinitionMap.put("/user.html", "roles[user]");
// // 最后一班都，固定格式
// filterChainDefinitionMap.put("/**", "authc");
// shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
// return shiroFilterFactoryBean;
// }
//
// /*
// * 凭证匹配器 （由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了
// * 所以我们需要修改下doGetAuthenticationInfo中的代码; )
// */
// /*
// * @Bean public HashedCredentialsMatcher hashedCredentialsMatcher() {
// * HashedCredentialsMatcher hashedCredentialsMatcher = new
// * HashedCredentialsMatcher();
// * hashedCredentialsMatcher.setHashAlgorithmName("md5");// 散列算法:这里使用MD5算法;
// * hashedCredentialsMatcher.setHashIterations(1024);//
// * 散列的次数，比如散列两次，相当于md5(md5("")); return hashedCredentialsMatcher; }
// */
//
// // 加载自定义的shiro认证类
// @Bean
// public AuthRealm myShiroRealm() {
// AuthRealm myShiroRealm = new AuthRealm();
// /* myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); */
// return myShiroRealm;
// }
//
// @Bean
// public DefaultWebSecurityManager securityManager() {
// DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// // 注入自定义的realm;
// securityManager.setRealm(myShiroRealm());
// // 注入缓存管理器;
// securityManager.setCacheManager(ehCacheManager());
//
// return securityManager;
// }
//
// /*
// * 开启shiro aop注解支持 使用代理方式;所以需要开启代码支持;
// */
// @Bean
// public AuthorizationAttributeSourceAdvisor
// authorizationAttributeSourceAdvisor(
// DefaultWebSecurityManager securityManager) {
// AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new
// AuthorizationAttributeSourceAdvisor();
// authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
// return authorizationAttributeSourceAdvisor;
// }
//
// /**
// * DefaultAdvisorAutoProxyCreator，Spring的一个bean，由Advisor决定对哪些类的方法进行AOP代理。
// */
// @Bean
// @ConditionalOnMissingBean
// public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
// DefaultAdvisorAutoProxyCreator defaultAAP = new
// DefaultAdvisorAutoProxyCreator();
// defaultAAP.setProxyTargetClass(true);
// return defaultAAP;
// }
//
// /*
// * shiro缓存管理器;
// * 需要注入对应的其它的实体类中-->安全管理器：securityManager可见securityManager是整个shiro的核心；
// */
// @Bean
// public EhCacheManager ehCacheManager() {
// System.out.println("ShiroConfiguration.getEhCacheManager()");
// EhCacheManager cacheManager = new EhCacheManager();
// cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml");
// return cacheManager;
// }
//
// }
